package com.raymond.entity.commons;

import java.util.Objects;

/**
 * desc-公共字符型枚举基类
 *
 * @author houmenghe
 * @date 2025/04/22 14:57
 **/
public interface StringBaseEnum {

    String getValue();

    String getDesc();

    /**
     * 根据value获取枚举值
     *
     * @param enumClass 枚举类
     * @param value 枚举值
     * @return 枚举
     * @param <E> e
     */
    static  <E extends Enum<?> & StringBaseEnum> E getEnumByValue(Class<E> enumClass, String value) {
        if (!Objects.isNull(value)) {
            E[] enumConstants = enumClass.getEnumConstants();
            for (E e : enumConstants) {
                if (e.getValue().equals(value)) {
                    return e;
                }
            }
        }
        return null;
    }

    /**
     * 根据value获取desc
     *
     * @param enumClass 枚举类
     * @param value 枚举值
     * @return 枚举描述
     * @param <E> e
     */
    static <E extends Enum<?> & StringBaseEnum> String getDescByValue(Class<E> enumClass, String value) {
        if (!Objects.isNull(value)) {
            E enumObj = StringBaseEnum.getEnumByValue(enumClass, value);
            if (enumObj == null) {
                return "";
            } else {
                return enumObj.getDesc();
            }
        }
        return "";
    }
}
